package syntaxcolor.v4.syntaxcolor.scanner;

import org.eclipse.swt.custom.StyledTextContent;

public class Scanner {

	int offset = 0;

	StyledTextContent target = null;

	public Scanner(StyledTextContent target) {
		this.target = target;
	}

	/**
	 * 读取一个字符，并将游标向后移动一位
	 * 
	 * @return
	 */
	public int read() {
		int ch = -1;
		if (offset < target.getCharCount()) {
			ch = target.getTextRange(offset, 1).charAt(0);
			offset++;
		}
		return ch;
	}

	/**
	 * 将游标向前移动一位
	 * 
	 * @return
	 */
	public boolean unread() {
		if (offset > 0&&offset<target.getCharCount()) {
			offset--;
			return true;
		}
		return false;
	}

	/**
	 * 取得当前偏移量
	 * 
	 * @return
	 */
	public int getOffset() {
		return offset;
	}

	/**
	 * 设置当前偏移量
	 * 
	 * @param offset
	 */
	public void setOffset(int offset) {
		this.offset = offset;
	}

	/**
	 * 判断是否还有字符可读
	 * 
	 * @return
	 */
	public boolean hasMoreChar() {
		return offset < target.getCharCount() ;
	}
}
